/**
 * @file http_server.h
 * @brief HTTP服务器
 * @details 基于sogou/workflow的HTTP服务器，提供RESTful API接口
 */

#pragma once

#include <workflow/WFHttpServer.h>
#include <workflow/WFFacilities.h>
#include <string>
#include <memory>

/**
 * @class HttpServer
 * @brief HTTP服务器类
 * @details 封装workflow的HTTP服务器，提供文件上传下载的Web接口
 */
class HttpServer 
{
public:
    /**
     * @brief 构造函数
     * @param port 监听端口
     */
    explicit HttpServer(int port);
    
    /**
     * @brief 析构函数
     */
    ~HttpServer();
    
    /**
     * @brief 启动服务器
     * @return bool 启动是否成功
     */
    bool start();
    
    /**
     * @brief 停止服务器
     */
    void stop();

private:
    /**
     * @brief 注册路由处理器
     */
    void setupRoutes();
    
    /**
     * @brief 处理根路径请求（前端页面）
     * @param req HTTP请求
     * @param resp HTTP响应
     */
    static void handleIndex(WFHttpTask* task);
    
    /**
     * @brief 处理文件上传请求
     * @param req HTTP请求
     * @param resp HTTP响应
     */
    static void handleUpload(WFHttpTask* task);
    
    /**
     * @brief 处理文件下载请求
     * @param req HTTP请求
     * @param resp HTTP响应
     */
    static void handleDownload(WFHttpTask* task);
    
    /**
     * @brief 处理文件信息查询请求
     * @param req HTTP请求
     * @param resp HTTP响应
     */
    static void handleFileInfo(WFHttpTask* task);
    
    /**
     * @brief 通用HTTP处理函数
     * @param task HTTP任务
     */
    static void process(WFHttpTask* task);

private:
    int port_;                          ///< 服务器端口
    std::unique_ptr<WFHttpServer> server_;  ///< workflow HTTP服务器实例
}; 